home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d18 / winchill.arc / WINDCHIL.PAS < prev   
Pascal/Delphi Source File  |  1989-03-19  |  4KB  |  105 lines

  1.  (*$LINESIZE:132,$PAGESIZE:62,$SIMPLE,$SYMTAB- *)
  2.  (**       WINDCHILL - GENERATE A WIND-CHILL EFFECTIVE TEMPERATURE CHART. 
  3.  *  
  4.  *         ANDY MICKEL    74/02/01, 80/02/08. 
  5.  *  
  6.  *         COPYRIGHT (C)  1980.   
  7.  *)
  8.  (*      THE WIND-CHILL EFFECTIVE TEMPERATURE IS DETERMINED BY CALCULATING  
  9.  * THE RELATIVE HEAT LOSS RESULTING FROM RADIATION, CONDUCTION, AND CONVECTION  
  10.  * FOR A GIVEN AIR TEMPERATURE AND WINDSPEED.  THE EQUATION FOR HEAT LOSS IS: 
  11.  *  
  12.  *       H = (C1 + C2 * SQRT(V) + C3 * V) * (33.0 - T)  
  13.  *  
  14.  * WHERE H IS THE HEAT LOSS (WIND-CHILL INDEX) IN KILOGRAM-CALORIES PER   
  15.  *            SQUARE METER PER HOUR (KG-CAL/M*M/HR),  
  16.  *       V IS THE WIND SPEED IN METERS PER SECOND (MPS),  
  17.  *       33.0 - T IS THE DIFFERENCE BETWEEN NORMAL SKIN TEMPERATURE AND AIR 
  18.  *            TEMPERATURE IN DEGREES CELSIUS, 
  19.  *       C1 = 10.45 (COOLING CAUSED BY RADIATION AND CONDUCTION), 
  20.  *       C2 = 10.00 (COOLING CAUSED BY CONVECTION), AND 
  21.  *       C3 = -1.00 .   
  22.  *  
  23.  *       THE CONSTANTS C1, C2, AND C3 DEPEND ON THE BODY BEING COOLED.  
  24.  * COMPLETE SHADE IS ASSUMED; UNDER BRIGHT SUNSHINE THE HEAT LOSS SHOULD BE 
  25.  * REDUCED BY ABOUT 200 KILOGRAM-CALORIES PER SQUARE METER PER HOUR.  
  26.  *  
  27.  * REFERENCE:  "WIND CHILL (EQUIVALENT TEMPERATURES)", INFORMATION ATTACHMENT 
  28.  *             NO. 3, U.S. DEPT. OF COMMERCE, NATIONAL OCEANIC AND ATMOSPHERIC  
  29.  *             ADMINISTRATION, SILVER SPRING, MD, APRIL 1971.   
  30.  *)
  31.  PROGRAM WINDCHILL(OUTPUT);
  32.  
  33.  CONST
  34.   SPEEDINCREMENT = 5.0 (* KPH *);
  35.        MAXSPEEDS = 16 (* WIDTH OF CHART - 1 *);
  36.          MAXTEMP = 2 (* DEGREES CELSIUS *);
  37.          MINTEMP = - 33;
  38.         SKINTEMP = 33;
  39.        CRCOOLING = 10.45 (* CONDUCTION AND RADIATION *);
  40.         CCOOLING = 10.00 (* CONVECTION *);
  41.       FOURBLANKS = '    ';
  42.   
  43.  TYPE
  44.       SPEEDRANGE = 0 .. MAXSPEEDS;
  45.   
  46.  VAR
  47.             CHART: ARRAY [SPEEDRANGE] OF REAL (* ONE LINE OF CHART *);
  48.           KPH2MPS: REAL (* CONVERSION FACTOR:  
  49.                               KILOMETERS PER HOUR  TO  METERS PER SECOND. *);
  50.              TEMP: MINTEMP .. MAXTEMP;
  51.           ADJTEMP: REAL;
  52.         WINDSPEED: REAL;
  53.      WALKINGSPEED: REAL;
  54.       DENOMINATOR: REAL;
  55.             SPEED: SPEEDRANGE;
  56.   
  57.  
  58.  PROCEDURE WRITEHEADINGS;
  59.   
  60.   BEGIN
  61.    PAGE(OUTPUT);
  62.    WRITELN;
  63.    WRITELN;
  64.    WRITELN('WIND-CHILL EFFECTIVE TEMPERATURE CHART': 87);
  65.    WRITELN('---------- --------- ----------- -----': 87);
  66.    WRITELN;
  67.    WRITELN;
  68.    WRITELN('TEMPERATURE': 12, 'WIND SPEED': 61);
  69.    WRITELN('(CELSIUS)': 11, '(KILOMETERS/HOUR)': 66);
  70.    WRITELN;
  71.   END (* WRITEHEADINGS *);
  72.  
  73.  
  74.  BEGIN (* WINDCHILL *)
  75.   KPH2MPS := 10.0 / 36.0;
  76.   WALKINGSPEED := 6.0 * KPH2MPS;
  77.   DENOMINATOR := CRCOOLING + CCOOLING * SQRT(WALKINGSPEED) - WALKINGSPEED;
  78.   WRITEHEADINGS;
  79.   WRITE(FOURBLANKS, FOURBLANKS, FOURBLANKS);
  80.   FOR SPEED := 0 TO MAXSPEEDS DO
  81.    WRITE((SPEEDINCREMENT * SPEED): 7: 1);
  82.   WRITELN;
  83.   WRITELN;
  84.   FOR TEMP := MAXTEMP DOWNTO MINTEMP DO
  85.    BEGIN
  86.     ADJTEMP := SKINTEMP - TEMP;
  87.     FOR SPEED := 0 TO MAXSPEEDS DO
  88.      BEGIN
  89.       WINDSPEED := SPEEDINCREMENT * KPH2MPS * SPEED;
  90.       IF WINDSPEED < WALKINGSPEED
  91.       THEN
  92.        CHART[SPEED] := TEMP
  93.       ELSE
  94.        CHART[SPEED] := SKINTEMP - (CRCOOLING + CCOOLING * SQRT(WINDSPEED) - WINDSPEED) * (ADJTEMP / DENOMINATOR);
  95.      END (*FOR*);
  96.     WRITE((TEMP * 1.0): 8: 1, FOURBLANKS);
  97.     FOR SPEED := 0 TO MAXSPEEDS DO
  98.      WRITE(CHART[SPEED]: 7: 1);
  99.     WRITELN;
  100.     IF ODD(TEMP) THEN
  101.      WRITELN
  102.    END (*FOR*)
  103.  END (* WINDCHILL *).
  104.  
  105.